#ifndef HERMITE_H
#define HERMITE_H

#include "displayable.h"

enum hermiteState
{
    Vertex,
    Tan
};

/*!
 * =====================================================================================
 *      \class :  Hermite
 *      \brief :  Représente une courbe de Hermite
 * =====================================================================================
 */

class Hermite : public Displayable
{
    private :

    public :

    /********************************************************************/
    /*                      Propriétés                                  */
    /********************************************************************/

    std::vector<Vectorf *> vertexControl;   //  Coordonnées des points (départ et arrivé) de la courbe
    std::vector<Vectorf *>  tan;     //  Vecteur représentant la force et l'orientation de la tangente pour le point correspondant

    Vectorf * color; //  Couleur de la courbe

    int nbSegment;  //  Nombre de segment par la courbe de Hermite

    hermiteState step; //  Variable utilisé pour savoir ce qu'il faut insérer dans la fonction AddVertex

    int discretisation; //  Variable utilisé pour définir le niveau de discretisation de la courbe de Hermite

    /********************************************************************/
    /*                      Constructeurs                               */
    /********************************************************************/

    Hermite();

    /********************************************************************/
    /*                      Méthodes                                    */
    /********************************************************************/

    void AddVertex(Vectorf*);
    void InitBuffers();
    virtual void Display();

};

#endif // HERMITE_H
